﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class Field
    {
        /// <summary>
        /// 控件编码。在一个文档范围内指定的唯一控件标识，一个文档中的所有类型的控件的编码不可重复，长度最大32个字符。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fieldId", Required = Required.Always)]
        public string FieldId { get; set; }

        /// <summary>
        /// 控件名称。名称只是为了方便辨识，在一个文档中，多个控件可以有相同的名称，长度最大32个字符。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fieldName", Required = Required.Always)]
        public string FieldName { get; set; }

        /// <summary>
        /// 控件定位。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "position", Required = Required.Always)]
        public FieldPosition Position { get; set; }

        /// <summary>
        /// 控件类型：
        /// person_sign: 个人签名
        /// corp_seal: 企业印章
        /// corp_seal_cross_page：企业骑缝章
        /// date_sign: 日期戳
        /// text_single_line: 单行文本
        /// text_multi_line: 多行文本
        /// check_box: 复选框
        /// 法大大平台未来将持续提供更丰富的控件
        /// 供您使用。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fieldType", Required = Required.Always)]
        public string FieldType { get; set; }

        /// <summary>
        /// 单行文本控件属性参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fieldTextSingleLine", Required = Required.AllowNull)]
        public FieldTextSingleLine FieldTextSingleLine { get; set; }

        /// <summary>
        /// 多行文本控件属性参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fieldTextMultiLine", Required = Required.AllowNull)]
        public FieldTextMultiLine FieldTextMultiLine { get; set; }

        /// <summary>
        /// 复选框控件属性参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fieldCheckBox", Required = Required.AllowNull)]
        public FieldCheckBox FieldCheckBox { get; set; }
    }
}